Storage networks present a new paradigm to the storage world. The old storage paradigm with which most operating systems are designed to work, allocate a single computer device to a single storage device. In contrast to the old storage paradigm, storage networks allow multiple computers and storage devices to be connected. In other words, with a storage network, any attached or networked computer (connected via any wired or wireless connection to any computer network such as a local area network (LAN), wide area network (WAN) etc.) is connected and can access one or more storage devices (or even one or more storage networks). A storage network may include at least one server and at least one storage device (such as a redundant array of independent disks (RAID) array, or any other type of storage array or storage medium including flash random access memory, tape, etc.).
FIG. 1 illustrates a computer 2, connected to a network storage device 4 through some type of network connection such as a wired connection 6, a wireless connection, etc. For the sake of brevity, a network server is not illustrated, additional networked computers 2 are not illustrated, etc.
A storage device 4, such as that of a RAID array for example, typically contains some type of storage medium 20, such as a plurality of disk spindles 22, for example. Alternatively, the storage medium 20 can include RAM, such as a type of flash RAM, tape drive storage, or any other type of storage enabling the storage device to persistently store data for networked computers 2.
A storage device 4 can publish internal storage to its networked computers 2 (it's hosts or “consumers”), by creating logical units of storage (LU's) using various methods that match with the storage consumers needs: for example, logical units stripped across multiple spindles to improve throughput; logical units mirrored across multiple spindles to improve data resiliency; and/or various combinations of these two to provide both improved throughput and resiliency.
FIG. 1 shows three such LU's A, B, C, numbered as 30, 32, and 34, respectively in FIG. 1. These units are constructed by being mapped to one or more disk spindles wherein, for example, A is mapped to the spindles in box 36, B is mapped to the spindles in box 38 (some of which overlap the spindles of box 36 for example) and C corresponds to the single spindle in box 40.
Consumers or networked computers can access and thus be assigned a particular logical unit by communicating requests to a port, such as port P1, P2, or P3 labeled 10A, 10B or 10C respectively in FIG. 1, on a storage device 4 and tagging the request with a port relative address called a logical unit number (LUN). As an example, FIG. 1 shows logical unit B mapped out of two different ports by the storage device 4. A consumer wanting to use logical unit B for storage, accesses it by sending a request to port 1, tagged with LUN 1, or to port 3 tagged with LUN 5. This is an example of a storage device 4 providing multiple paths to the same logical unit, which is commonly done for full tolerance and/or improved bandwidth.
Consumers of networked storage 4 can also have multiple connections into a storage network for the same reasons. FIG. 1 illustrates a single computer 2 that has two connections into the storage network via host bus adaptors H1 and H2, labeled 8a and 8b, respectively.
The dashed lines in FIG. 1 represent various paths from the computer 2, through the storage network, to logical unit B. From the perspective of the computer 2, each path will appear to that computer as an unrelated block of storage. Internally, the computer's operating system physically creates “objects” to represent the blocks of storage that it has been assigned, as shown by elements 52, 54, 56 and 58 of FIG. 1 for example. In this example, the computer 2 has flow paths to logical unit B (although it may have flow paths to one or more LUs) and has created four different operating system objects that ultimately point to the same logical unit of storage, wherein the objects can be stored as follows: 52-disk B:2, t:3, LUN:5; 54-disk B:1, t:3, LUN:5; 56-disk B:2, t:1, LUN:1; and 58-disk B:1, t:1, LUN:1, wherein the first “disk B” entry indicates the host bus adapter connector of the computer 2 to the network 6; the second “t entry” indicates the ports of the storage device; and the “LUN” indicates for the particular port relative address.
Network storage allocation software has been developed to allocate various networked computers to various areas of storage, across one or multiple storage devices for example. Thus, a single computer 2 need not be mapped to various storage areas within the storage device 4, but may be mapped to multiple storage devices. However, for security purposes, it is important that only computers entitled to access of a particular portion of storage be able to access any particular allocated storage location. In addition, since storage allocation can be somewhat complex within a particular network, it is important that such storage allocation be done as efficiently as possible.